<?php

/**

 * page.class.php	分页类

 *

 * @copyright			(C) 2005-2010 BUSY

 * @license				

 * @lastmodify			2012-6-1

 */



defined('G_IN_SYSTEM')or exit('No permission resources.');

class  page {



	private $total;					//总条数

	private $num;					//显示条数

	private $url;					//没有&page的URL

	private $limit;					//限制显示条数

	private $page;					//当前页数

	private $pagetotal;				//一共多少页数	

	private $pageurl;				//外部定义分页url



	public function config($total,$num,$page,$pageurl=''){		

		$this->total=$total;		

		$this->num=$num;

		$this->pageurl=$pageurl;		

		$this->pagetotal=ceil($this->total/$this->num);

		$this->page=$this->get_url_page($page);

		$this->url=$this->geturl();

		$this->limit=$this->setlimit();

	}	

	// 主入口

	public  function show($style='',$ret=''){

		$style=strtolower(trim($style));		

		switch($style){		

			case "one" :				//普通的样式			

				return $this->ordinary($ret);			

				break;			

			case "two" :

				return $this->pagelist($ret);

				break;				

			default:			

				return $this->pagelist($ret);

				break;		

		}		

	}

	

	

	// 普通的样式

	private function ordinary($ret){

		$Prev=$this->page-1;

		$next=$this->page+1;

		$html_l="<ul id='Page_Ul'>";

		$html='';				

		if($Prev!=0){

			$html.="<li id='Page_Prev'><a href=\"{$this->url[0]}{$Prev}{$this->url[1]}\">上一页</a></li>";	

		}else{

			$html.="<li id='Page_Prev'><a href=\"javascript:void(0);\">上一页</a></li>";	

		}	

		if($next<=$this->pagetotal){

			$html.="<li id='Page_Next'><a href=\"{$this->url[0]}{$next}{$this->url[1]}\">下一页</a></li>";

		}else{

			$html.="<li id='Page_Next'><a href=\"javascript:void(0);\">下一页</a></li>";	

		}

		$html.="<li id='Page_One'><a href=\"{$this->url[0]}1{$this->url[1]}\">首页</a></li>";	

		$html.="<li id='Page_End'><a href=\"{$this->url[0]}{$this->pagetotal}{$this->url[1]}\">尾页</a></li>";	

		$html_r="</ul>";

		if($this->total==0){

			return;

		}else{

			if($ret=='li'){

				return $html;

			}else{

				return $html_l.$html.$html_r;

			}

		}

	}

	

	// 默认的样式-列表样式

	private function pagelist($ret){	

		

		$listnum=floor(7/2);		

		$html_l="<ul id='Page_Ul'>";

		$html='';

		$html.="<li id='Page_Total'>{$this->total}条";

		$html.="<li id='Page_One'><a href=\"{$this->url[0]}1{$this->url[1]}\">首页</a></li>";

		if($this->page==1){

			$html.="<li id='Page_Prev'><a href=\"{$this->url[0]}".($this->page).$this->url[1]."\">上一页</a></li>";

		}else{

			$html.="<li id='Page_Prev'><a href=\"{$this->url[0]}".($this->page-1).$this->url[1]."\">上一页</a></li>";

		}

		for($i=$listnum;$i>=1;$i--){

			$page=$this->page-$i;

			

			if($page<1){

				continue;			

			}else{

				$html.="<li class='Page_Num'><a href=\"{$this->url[0]}{$page}{$this->url[1]}\">{$page}</a></li>";

			}

			

		}

		

		$html.="<li class='Page_This'>{$this->page}</li>";

		

		for($i=1;$i<=$listnum;$i++){

			

			$page=$this->page+$i;

			if($page<=$this->pagetotal){

				$html.="<li class='Page_Num'><a href=\"{$this->url[0]}{$page}{$this->url[1]}\">{$page}</a></li>";

			}else{

				continue;	

			}

		}

		if($this->page==$this->pagetotal){

			$html.="<li id='Page_Next'><a href=\"{$this->url[0]}".($this->page).$this->url[1]."\">下一页</a></li>";

		}else{

			$html.="<li id='Page_Next'><a href=\"{$this->url[0]}".($this->page+1).$this->url[1]."\">下一页</a></li>";

		}	

		$html.="<li id='Page_End'><a href=\"{$this->url[0]}{$this->pagetotal}{$this->url[1]}\">尾页</a></li>";

		$html_r="</ul>";

		

		if($this->total==0){

			return;

		}else{

			if($ret=='li'){

				return $html;

			}else{

				return $html_l.$html.$html_r;

			}

		}

	

	}

	

	

	//获取URL

	private function geturl(){	

		$url=array(0=>'',1=>'');	

		$urls=get_web_url();


		// $urls = str_ireplace("/index.php/","/",$urls);

		

		$urls=trim($urls,'/');

		$parse=parse_url($urls);

		if(isset($parse['query'])){		

			parse_str($parse['query'],$parses);		

			unset($parses['p']);			

			if(empty($parses)){

				$urls=$parse['path']."?";

			}else{				

				$urls=$parse['path']."?".http_build_query($parses).'&';				

				$urls = str_ireplace("%2f",'/',$urls);

				$urls = str_ireplace("=&",'/&',$urls);

			}	

		}else{

			$urls=$parse['path']."?";

		}		

		$urls  =   preg_replace("#\/\/#","/",$urls);

	 	$url[0]=$urls.'p=';	

		return $url;

	}

	

	

	private function get_url_page($page=1){

			/*

			global $_cfg;			

			$param = end($_cfg['param_arr']);

			if(empty($param)){				

				$_cfg['param_arr']['url']=$_cfg['param_arr']['url'].'/p1q';

				$page = 1;

			}else{

				preg_match_all("/p(.*)q/i", $param,$matches,PREG_SET_ORDER);

				if(isset($matches[0][1])){

					$page = abs(intval($matches[0][1]));					

				}else{					

					$_cfg['param_arr']['url']=$_cfg['param_arr']['url'].'/p1q';

					$page = 1;

				}				

			}

			*/

			$page = abs(intval($page));

			if(!$page)$page=1;

			if($page>$this->pagetotal){

				$page=$this->pagetotal;

			}		

			return $page;

			

	}

	

	private function get_this_url(){

		global $_cfg;				

		$urls = WEB_PATH.'/'.$_cfg['param_arr']['url'];

		$urls = explode('/',$urls);	

		array_pop($urls);		

		$urls = implode('/',$urls);

		return array($urls.'/p',"q");

	}

	

	//设置LIMIT

	private function setlimit(){

		return "LIMIT ".($this->page-1)*$this->num.",".$this->num;

	}

	

	

	//使外部能访问limit

	public function __get($value){

		return $this->$value;		

	}



}